<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>留言板</title>
    <style>
        .container {
            width: 350px;
            height: 300px;
            margin: 0 auto;
            /* border: 1px black solid; */
            text-align: center;
        }

        .grey {
            color: grey;
        }

        .container .row {
            width: 350px;
            height: 40px;

            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .container .row input {
            width: 260px;
            height: 30px;
        }

        #submit {
            width: 350px;
            height: 40px;
            background-color: orange;
            color: white;
            border: none;
            margin: 10px;
            border-radius: 5px;
            font-size: 20px;
        }
    </style>
</head>

<body>
<div class="container">
    <h1>留言板</h1>
    <p class="grey">输入后点击提交, 会将信息显示下方空白处</p>
    <div class="row">
        <span>谁:</span> <input type="text" name="" id="from">
    </div>
    <div class="row">
        <span>对谁:</span> <input type="text" name="" id="to">
    </div>
    <div class="row">
        <span>说什么:</span> <input type="text" name="" id="say">
    </div>
    <input type="button" value="提交" id="submit" onclick="submit()">
    <!-- <div>A 对 B 说: hello</div> -->
</div>

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
// <!--    我直接在这里打字了。
//  你看第一个方法getList 这个是获取历史消息的， 他是先发送一个请求到后端，去问一下有无历史消息，如果有历史消息，就加载，如果没有就不显示了
// 但是 private List<MessageInfo> messageList=new ArrayList<>();  你后端是用一个list来存储消息的，这意味着，是在内存中存储的，
// 所以，一旦服务器重启，数据就丢失了。所以你再去加载这个页面就没有消息-->
//这段代码会在页面加载时执行一次，用于显示历史留言，如再刷新一次的话，这个方法会被用到，显示之前传递过的信息。
//它只会运行一次，不会影响后续提交行为。
    $.ajax({
        type: "get",
        url: "/message/getList",
        success: function (messages) {
            // for (let index = 0; index < messages.length; index++) {
            //     const element = messages[index];

            // }
            for (let msg of messages) {
                let divE = "<div>" + msg.from + "对" + msg.to + "说:" + msg.message + "</div>";
                //3. 把节点添加到页面上
                $(".container").append(divE);
            }
        }
    });
    // 再看这个方法  这个是从输入框获取值，然后再传递给后端，然后接收后端的返回值，再显示到界面。
 // 所以这个就是为什么你即使删除了，第一个，方法，也能正常显示，因为第一个方法，其实就是加载历史消息。 但是服务一旦重启，数据就丢失了。
// 相当于第一个方法就没用了。-- 它正真的作用是再你的这个后端使用上了数据库的时候，那时候数据就在数据库存着 ，第一个方法才嫩体现给效果

    function submit() {
        //1. 获取留言的内容
        var from = $('#from').val();
        var to = $('#to').val();
        var say = $('#say').val();
        if (from == '' || to == '' || say == '') {
            return;
        }
        //调用后端, 存储信息
        $.ajax({
            type: "post",
            url: "/message/publish",
            contentType: "application/json",
            data: JSON.stringify({
                from: from,
                to: to,
                message: say
            }),
            success: function (result) {
                if (result) {
                    //2. 构造节点
                    var divE = "<div>" + from + "对" + to + "说:" + say + "</div>";
                    //3. 把节点添加到页面上
                    $(".container").append(divE);
                    //4. 清空输入框的值
                    $('#from').val("");
                    $('#to').val("");
                    $('#say').val("");
                } else {
                    alert("添加留言失败");
                }
            }
        });




    }

</script>
</body>

</html>